name: build

# build on c/cpp changes or workflow changes
on:
  push:
    paths:
      - '**.[ch]'
      - '**.cpp'
      - '**/CMakeLists.txt'
      - 'util/ci/**'
      - '.github/workflows/**.yml'
  pull_request:
    paths:
      - '**.[ch]'
      - '**.cpp'
      - '**/CMakeLists.txt'
      - 'util/ci/**'
      - '.github/workflows/**.yml'

jobs:
  gcc:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v3
      - name: Install deps
        run: |
          source util/ci/script.sh
          install_linux_deps

      - name: Build
        run: |
          source util/ci/script.sh
          run_build
        env:
          CC: gcc
          CXX: g++

      - name: Test
        run: |
          source util/ci/script.sh
          do_functional_test

  clang:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v3
      - name: Install deps
        run: |
          source util/ci/script.sh
          install_linux_deps

      - name: Build
        run: |
          source util/ci/script.sh
          run_build
        env:
          CC: clang
          CXX: clang++

      - name: Test
        run: |
          source util/ci/script.sh
          do_functional_test
